var express = require('express');
var mockjs = require('mockjs'); //引入这个模块
var router = express.Router();

/* GET home page. */
router.get('/', function (req, res, next) {
  res.render('index', {
    title: 'Express'
  });
});

//生成期号和当前时间
var makeIssue=function(){
  var date = new Date();
  var first_issue_date=new Date();  //第1期时间，9点开始，10分钟一期
  first_issue_date.setHours(9);     //起始时间是9点
  first_issue_date.setMinutes(10);  //截止时间是9点10分
  first_issue_date.setSeconds(0);   //0秒
  var end_issue_date=new Date(first_issue_date.getTime()+77*10*60*1000);//截止时间，第78期  77期*10分钟*60秒*1000毫秒


  var cur_issue,end_time,state; //当前期号，每一期的截止时间，状态

  // 正常销售
  if(date.getTime()-first_issue_date.getTime()>0&&date.getTime()-end_issue_date.getTime()<0){ //date.getTime()获得毫秒数。当前时间大于开始时间小于截止时间时是正常销售状态
    var cur_issue_date=new Date();  //当前期号
    cur_issue_date.setHours(9);
    cur_issue_date.setMinutes(0);
    cur_issue_date.setSeconds(0);
    var minus_time=date.getTime()-cur_issue_date.getTime();  //当期的销售剩余时间
    var h=Math.ceil(minus_time/1000/60/10); //剩余时间要换算成小时。Math.ceil()为向上取整
    var end_date=new Date(cur_issue_date.getTime()+1000*60*10*h);
    end_time=end_date.getTime(); //截止时间
    //保存一下当前期号。 getFullYear()获取年份。slice()方法:可从已有的数组中返回选定的元素，负数表示从后往前数，“这东西在字符串也可以使用”
    cur_issue=[end_date.getFullYear(),('0'+(end_date.getMonth()+1)).slice(-2),('0'+end_date.getDate()).slice(-2),('0'+h).slice(-2)].join('');
  }else{
    // 今天销售已截止
    first_issue_date.setDate(first_issue_date.getDate()+1);//把时间调整为下一天
    end_time=first_issue_date.getTime();  //计算截止时间
    cur_issue=[first_issue_date.getFullYear(),('0'+(first_issue_date.getMonth()+1)).slice(-2),('0'+first_issue_date.getDate()).slice(-2),'01'].join('');
  }

  //判断状态。一期十分钟，前八分钟是销售，后十分钟是“开奖中”
  var cur_date=new Date();
  if(end_time-cur_date.getTime()>1000*60*2){  //每一期前8分钟销售
    state='正在销售'
  }else{
    state='开奖中'
  }
  return {
    issue:cur_issue,
    state:state,
    end_time:end_time
  }
}


// get omit[遗漏] 获取遗漏  router.get()是express的语法
router.get('/get/omit', function (req, res, next) {
  res.json(mockjs.mock({  //res.json()表示返回JSON格式。使用mockjs的mock功能
    'data|11': [/[1-9]{1,3}|0/],  //返回长度为11的数据。后面那个格式是mockjs提供的格式
    'issue':/[1-9]{8}/
  }))
});

// get opencode[开奖号] 开奖接口 router.get()是express的语法
router.get('/get/opencode', function (req, res, next) {
  var issue=makeIssue().issue;  //用上面定义的方法
  var data=mockjs.mock({  //开奖数据还是用mockjs模拟
    'data': [/[1-3]/,/[4-5]/,/[6-7]/,/[8-9]/,/1[0-1]/]  //1~3中随机生成，4-5中随机生成...
  }).data;
  res.json({  //以这个格式的数据返回
    issue:issue,
    data:data
  })
});


// get state 状态接口 router.get()是express的语法
router.get('/get/state',function(req,res,next){
  var state=makeIssue();
  console.log(state);
  res.json(state)
});


module.exports = router;
